#include <stdio.h>
#include <stdlib.h>

void print_until_O(const char *str);
void sort(char *str);
void swap(char *str, int i, int j);

int main(int argc, char *argv[])
{
    const char *program = *argv;
    if(argc != 2)
    {
        fprintf(stderr, "Usage: %s <number>\n", program);
        fprintf(stderr, "ERROR: no number provided\n");
        exit(1);
    }
    char *str = argv[1];
    print_until_O(str);
    sort(str);
    print_until_O(str);
}

/*
 * No haría falta hacer la comprobación del null byte por la especificación del ejercicio, pero así está completo.
 */
void print_until_O(const char *str)
{
    int i = 0;
    do{
        printf("%c", str[i]);
    } while(str[i + 1] && str[i++] != 'O');          //str[i + 1] para no imprimir el null byte
    puts("");
}

void sort(char *str)
{
    for(int i = 0; str[i]; ++i)
        for(int j = i; str[j]; ++j)
            if(str[i] < str[j])
                swap(str, i, j);
}

void swap(char *str, int i, int j)
{
    char c = str[i];
    str[i] = str[j];
    str[j] = c;
}
